# -*- coding: utf8 -*-
'''
    1.3.2 灰度变换
'''

import os
from PIL import Image
from numpy import array, uint8

infile = 'img/haizei.jpg'

# 读取图像到数组中
im = array(Image.open(infile).convert('L'))
outfile1 = os.path.splitext(infile)[0] + '1.3.2-1.jpg'
outfile2 = os.path.splitext(infile)[0] + '1.3.2-2.jpg'
outfile3 = os.path.splitext(infile)[0] + '1.3.2-3.jpg'

im1 = 255 - im      # 对图像进行反相处理
pil_im1 = Image.fromarray(im1)
pil_im1.save(outfile1)

im2 = (100.0/255) * im + 100    # 将图像像素值变换到100~200区间
pil_im2 = Image.fromarray(uint8(im2))
pil_im2.save(outfile2)

im3 = 255.0 * (im/255.0)**2     # 对图像像素值求平方后得到的图像
pil_im3 = Image.fromarray(uint8(im3))
pil_im3.save(outfile3)

'''
  array()变换的相反操作可以使用PIL的fromarray()函数完成
  如果通过一些操作将‘uint8’数据类型转换为其他数据类型，比如im2和im3，那么在创建PIL图像之前，需要将数据类型转换回uint8。
'''
